package xio.ccf_201809;

import java.util.Scanner;

/**
 * 买菜 100 分
 */
public class GroceryShopping {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 读取输入
        int n = sc.nextInt();
        // 小 H 的时间段
        int[][] h = new int[n][2];
        // 小 W 的时间段
        int[][] w = new int[n][2];
        for (int i = 0; i < n; i++) {
            h[i][0] = sc.nextInt();
            h[i][1] = sc.nextInt();
        }
        for (int i = 0; i < n; i++) {
            w[i][0] = sc.nextInt();
            w[i][1] = sc.nextInt();
        }

        // 两个时间段交集长度之和
        int result = 0;

        // 计算思路：H 和 W 都从各自第一段开始比较(i=0,j=0)，判断会有交集才去计算交集长度，
        // 否则谁最大值小就用下一个时间段来比较，比如 h[i] 段最大值 h[i][1] 比 w[j]的最小值还小，那
        // 这俩段肯定没有交集，且下一段 h[i+1] 可能和当前的 w[j] 有交集，因此 i++, j 不变。
        int i = 0;
        int j = 0;
        while (i < n && j < n) {
            if (h[i][1] <= w[j][0]) {
                i++;
                continue;
            }
            if (w[j][1] <= h[i][0]) {
                j++;
                continue;
            }

            // 计算两段的交集长度
            result += getIntersection(h[i][0],h[i][1],w[j][0],w[j][1]);
            // 计算完后，移到下一段
            if (h[i][1] > w[j][1]){
                j ++;
            }else {
                i ++;
            }
        }

        System.out.println(result);

    }

    /**
     * 获取两段时间的交集长度（a，b）和 (m,n)
     * @param a 第一段时间开头
     * @param b 第一段时间结尾
     * @param m 另一段时间开头
     * @param n 另一段时间结尾
     */
    private static int getIntersection(int a, int b, int m, int n) {
        int s = Math.max(a,m);
        int t = Math.min(b,n);
        // t 大于 s 就返回 t-s，否则说明这两段没有交集
        return t>s ? t-s:0;
    }
}
